﻿
#region Comment

/*
 * Project：    SpaceLibrary
 * 
 * FileName:    Option/toolbox.cs
 * CreatedOn:   2016-06-23
 * CreatedBy:   农夫有田
 * 
 * 
 * Description：
 *      ->      ECharts3全局参数
 *   
 * History：
 *      ->
 * 
 * Examples：
 *      ->      
 *          
 */

#endregion

namespace SpaceLibrary
{
    using System;
    using System.Collections.Generic;

    #region 全局参数

    /// <summary>
    /// 全局参数
    /// </summary>
    public partial class ECharts3
    {
        #region toolbox

        /// <summary>
        /// 工具栏。内置有导出图片，数据视图，动态类型切换，数据区域缩放，重置五个工具。
        /// </summary>
        public _toolbox toolbox = new _toolbox();

        public class _toolbox
        {
            #region show

            private bool _show = true;

            /// <summary>
            /// 是否显示工具栏组件。
            /// <para>[ default: true ]</para>
            /// </summary>
            public bool show
            {
                get { return _show; }
                set { _show = value; }
            }

            #endregion

            #region orient

            private dynamic _orient = Params.orient.horizontal;

            /// <summary>
            /// 工具栏 icon 的布局朝向。
            /// <para>[ default: 'horizontal' ]</para>
            /// <para>可选：'horizontal'，'vertical'</para>
            /// </summary>
            public dynamic orient
            {
                get { return _orient; }
                set
                {
                    Type gettype = value.GetType();
                    if (gettype.IsEnum)
                    {
                        switch ((Enum.toolbox.orient)value)
                        {
                            case Enum.toolbox.orient.horizontal:
                                _orient = Params.orient.horizontal;
                                break;
                            case Enum.toolbox.orient.vertical:
                                _orient = Params.orient.vertical;
                                break;
                            default:
                                _orient = Params.orient.horizontal;
                                break;
                        }
                    }
                    else
                        _orient = value;
                }
            }

            #endregion

            #region itemSize

            public const int _itemSizeDefult = 15;

            private int _itemSize = _itemSizeDefult;

            /// <summary>
            /// 工具栏 icon 的大小。
            /// <para>[ default: 15 ]</para>
            /// </summary>
            public int itemSize
            {
                get { return _itemSize; }
                set { _itemSize = value; }
            }

            #endregion

            #region itemGap

            public const int _itemGapDefult = 10;

            private int _itemGap = _itemGapDefult;

            /// <summary>
            /// 工具栏 icon 每项之间的间隔。横向布局时为水平间隔，纵向布局时为纵向间隔。
            /// <para>[ default: 10 ]</para>
            /// </summary>
            public int itemGap
            {
                get { return _itemGap; }
                set { _itemGap = value; }
            }

            #endregion

            #region showTitle

            private const bool _showTitleDefault = true;

            private bool _showTitle = _showTitleDefault;

            /// <summary>
            /// 是否在鼠标 hover 的时候显示每个工具 icon 的标题。
            /// <para>[ default: true ]</para>
            /// </summary>
            public bool showTitle
            {
                get { return _showTitle; }
                set { _showTitle = value; }
            }

            #endregion

            #region feature

            /// <summary>
            /// 各工具配置项。
            /// <para>除了各个内置的工具按钮外，还可以自定义工具按钮。</para>
            /// <para>注意，自定义的工具名字，只能以 my 开头</para>
            /// </summary>
            public _feature feature = new _feature();

            public class _feature
            {

                #region saveAsImage

                /// <summary>
                /// 保存为图片。
                /// </summary>
                public _saveAsImage saveAsImage = new _saveAsImage();

                public class _saveAsImage
                {
                    #region show

                    private bool _show = false;

                    /// <summary>
                    /// 是否显示该工具。
                    /// <para>[ default: true ]</para>
                    /// </summary>
                    public bool show
                    {
                        get { return _show; }
                        set { _show = value; }
                    }

                    #endregion

                    #region type

                    private dynamic _type = Params.pictype.png;

                    /// <summary>
                    /// 保存的图片格式。支持 'png' 和 'jpeg'。
                    /// <para>[ default: 'png' ]</para>
                    /// </summary>
                    public dynamic type
                    {
                        get { return _type; }
                        set
                        {
                            Type gettype = value.GetType();
                            if (gettype.IsEnum)
                            {
                                switch ((Enum.toolbox.pictype)value)
                                {
                                    case Enum.toolbox.pictype.png:
                                        _type = Params.pictype.png;
                                        break;
                                    case Enum.toolbox.pictype.jpeg:
                                        _type = Params.pictype.jpeg;
                                        break;
                                    default:
                                        _type = Params.pictype.png;
                                        break;
                                }
                            }
                            else
                                _type = value;
                        }
                    }

                    #endregion

                    #region name

                    private string _name = string.Empty;

                    /// <summary>
                    /// 保存的文件名称，默认使用 title.text 作为名称。
                    /// </summary>
                    public string name
                    {
                        get { return _name; }
                        set { _name = value; }
                    }

                    #endregion

                    #region backgroundColor

                    private string _backgroundColor = string.Empty;

                    /// <summary>
                    /// 保存的图片背景色，默认使用 backgroundColor，如果backgroundColor不存在的话会取白色。
                    /// <para>[ default: 'auto' ]</para>
                    /// </summary>
                    public string backgroundColor
                    {
                        get { return _backgroundColor; }
                        set { _backgroundColor = value; }
                    }

                    #endregion

                }

                #endregion


            }

            #endregion

            #region  left

            private dynamic _left = Params.align.auto;

            /// <summary>
            /// 工具栏组件离容器左侧的距离。
            /// <para>[ default: 'auto' ]</para>
            /// <para>left 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'left', 'center', 'right'。</para>
            /// <para>如果 left 的值为'left', 'center', 'right'，组件会根据相应的位置自动对齐。</para>
            /// </summary>
            public dynamic left
            {
                get { return _left; }
                set
                {
                    Type type = value.GetType();
                    if (type.IsEnum)
                    {
                        switch ((Enum.toolbox.left)value)
                        {
                            case Enum.toolbox.left.auto:
                                _left = Params.align.auto;
                                break;
                            case Enum.toolbox.left.left:
                                _left = Params.align.left;
                                break;
                            case Enum.toolbox.left.center:
                                _left = Params.align.center;
                                break;
                            case Enum.toolbox.left.right:
                                _left = Params.align.right;
                                break;
                            default:
                                _left = Params.align.auto;
                                break;
                        }
                    }
                    else
                        _left = value;

                }
            }

            #endregion

            #region top

            private dynamic _top = Params.align.auto;

            /// <summary>
            /// 工具栏组件离容器上侧的距离。
            /// <para>[ default: 'auto' ]</para>
            /// <para>top 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比，也可以是 'top', 'middle', 'bottom'。</para>
            /// <para>如果 top 的值为'top', 'middle', 'bottom'，组件会根据相应的位置自动对齐。</para>
            /// </summary>
            public dynamic top
            {
                get { return _top; }
                set
                {
                    Type type = value.GetType();
                    if (type.IsEnum)
                    {
                        switch ((Enum.toolbox.top)value)
                        {
                            case Enum.toolbox.top.auto:
                                _top = Params.align.auto;
                                break;
                            case Enum.toolbox.top.top:
                                _top = Params.align.top;
                                break;
                            case Enum.toolbox.top.middle:
                                _top = Params.align.middle;
                                break;
                            case Enum.toolbox.top.bottom:
                                _top = Params.align.bottom;
                                break;
                            default:
                                _top = Params.align.auto;
                                break;
                        }
                    }
                    else
                        _top = value;

                }
            }

            #endregion

            #region right

            private dynamic _right = Params.align.auto;

            /// <summary>
            /// 工具栏组件离容器右侧的距离。
            /// <para>[ default: 'auto' ]</para>
            /// <para>right 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。</para>
            /// </summary>
            public dynamic right
            {
                get { return _right; }
                set { _right = value; }
            }

            #endregion

            #region bottom

            private dynamic _bottom = Params.align.auto;

            /// <summary>
            /// 工具栏组件离容器下侧的距离。
            /// <para>[ default: 'auto' ]</para>
            /// <para>bottom 的值可以是像 20 这样的具体像素值，可以是像 '20%' 这样相对于容器高宽的百分比。</para>
            /// </summary>
            public dynamic bottom
            {
                get { return _bottom; }
                set { _bottom = value; }
            }

            #endregion

            #region width

            private dynamic _width = Params.width.auto;

            /// <summary>
            /// 工具栏组件的宽度。默认自适应。
            /// <para>[ default: 'auto' ]</para>
            /// </summary>
            public dynamic width
            {
                get { return _width; }
                set { _width = value; }
            }

            #endregion

            #region height

            private dynamic _height = Params.height.auto;

            /// <summary>
            /// 工具栏组件的高度。默认自适应。
            /// <para>[ default: 'auto' ]</para>
            /// </summary>
            public dynamic height
            {
                get { return _height; }
                set { _height = value; }
            }

            #endregion

        }

        #endregion
    }

    #endregion
}
